home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2001 May / maximum-cd-2001-05.iso / Blade of Darkness / data1.cab / Program_Executable_Files / Lib / Widgets / ScorerWidgets.pyc (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2000-11-16  |  49.4 KB  |  1,067 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 1.5)
  3.  
  4. import BUIx
  5. import Bladex
  6. import Raster
  7. import Interpolator
  8. import Reference
  9. import math
  10. import pdb
  11. import netgame
  12. import WidgetsExtra
  13. import types
  14. font_server = BUIx.B_FontServer()
  15.  
  16. class B_GameTextWidget(BUIx.B_TextWidget):
  17.     
  18.     def __init__(self, parent, name):
  19.         BUIx.B_TextWidget.__init__(self, parent, name, '\n\n\n\n\n', font_server, '../../Data/Mapa de letras.bmp')
  20.         self.Background = BUIx.B_RectWidget(self, name + 'Background', 0, 0)
  21.         self.Background.SetSolid(1)
  22.         self.SetDrawFunc(self.Draw)
  23.  
  24.     
  25.     def SetAlpha(self, al):
  26.         BUIx.B_TextWidget.SetAlpha(self, al)
  27.  
  28.     
  29.     def Draw(self, x, y, time):
  30.         self.Background.DefDraw(x, y, time)
  31.         self.DefDraw(x, y, time)
  32.  
  33.     
  34.     def SetText(self, txt):
  35.         BUIx.B_TextWidget.SetText(self, txt)
  36.         (w, h) = self.GetSize()
  37.         self.Background.SetSize(w, h)
  38.  
  39.  
  40.  
  41. class BarIncClass(Interpolator.LinearInt):
  42.     
  43.     def __init__(self, init_value, end_value, widget):
  44.         Interpolator.LinearInt.__init__(self, init_value, end_value)
  45.         self.widget = widget
  46.  
  47.     
  48.     def Execute(self, value):
  49.         ret = Interpolator.LinearInt.Execute(self, value)
  50.         self.widget.SetPosition(ret, 0)
  51.  
  52.     
  53.     def EndExecute(self):
  54.         self.widget.FinalUpdate()
  55.  
  56.  
  57.  
  58. class B_SmoothBarWidget(BUIx.B_BarWidget):
  59.     
  60.     def __init__(self, parent, name, width, height):
  61.         BUIx.B_BarWidget.__init__(self, parent, name, width, height)
  62.         self.interpolator = Interpolator.Interp('interp' + name)
  63.         self.Updating = 0
  64.         self.CurrentTarget = self.GetPosition()
  65.  
  66.     
  67.     def SetPosition(self, pos, smooth = 1):
  68.         currpos = self.GetPosition()
  69.         if currpos == pos:
  70.             return None
  71.         
  72.         if smooth:
  73.             if self.Updating == 1:
  74.                 if self.CurrentTarget != pos:
  75.                     Bladex.AddScheduledFunc(Bladex.GetTime() + 1.5, self.SetPosition, (pos, 1))
  76.                     print 'Posponed SetPosition', pos, smooth
  77.                     return None
  78.                 
  79.             else:
  80.                 self.Updating = 1
  81.                 self.CurrentTarget = pos
  82.                 now = Bladex.GetTime()
  83.                 m_interp = BarIncClass(currpos, pos, self)
  84.                 self.interpolator.AddAction(now, now + 1.5, m_interp)
  85.         else:
  86.             BUIx.B_BarWidget.SetPosition(self, pos)
  87.  
  88.     
  89.     def FinalUpdate(self):
  90.         self.Updating = 0
  91.         BUIx.B_BarWidget.SetPosition(self, self.CurrentTarget)
  92.  
  93.  
  94.  
  95. class B_Obj3DWidget(BUIx.B_RectWidget):
  96.     
  97.     def __init__(self, Parent, Name, width, Height, BODName, ObjectName = ''):
  98.         BUIx.B_RectWidget.__init__(self, Parent, Name, width, Height)
  99.         self.SetData(self)
  100.         self.BODName = BODName
  101.         self.ObjectName = ObjectName
  102.         self.SetDrawFunc(self.Draw)
  103.         self.Selected = 0
  104.         self.Solid = 0
  105.         self.Border = 0
  106.         self.Scale = 0.1
  107.  
  108.     
  109.     def Draw(self, x, y, time):
  110.         if self.BODName == None:
  111.             return None
  112.         
  113.         if self.GetVisible() == 0:
  114.             return None
  115.         
  116.         self.DefDraw(x, y, time)
  117.         (w, h) = self.GetSize()
  118.         Raster.SetAlpha(self.GetAlpha())
  119.         if self.GetAutoScale():
  120.             (rw, rh) = Raster.GetSize()
  121.             self.Scale = 0.1 * rw / 640.0
  122.         
  123.         Bladex.DrawBOD(self.BODName, x, y, w, h, self.Scale, 1)
  124.  
  125.     
  126.     def SetBOD(self, BODName):
  127.         self.BODName = BODName
  128.  
  129.     
  130.     def GetBOD(self):
  131.         return self.BODName
  132.  
  133.     
  134.     def SetObjectName(self, ObjectName):
  135.         self.ObjectName = ObjectName
  136.  
  137.     
  138.     def GetObjectName(self):
  139.         return self.ObjectName
  140.  
  141.  
  142.  
  143. def GetUnusedKeys(inv):
  144.     import darfuncs
  145.     i = 0
  146.     for j in range(inv.nKeys):
  147.         key = Bladex.GetEntity(inv.GetKey(j))
  148.         if key.Data == None:
  149.             key.Data = darfuncs.EmptyClass()
  150.             key.Data.Used = 1
  151.         
  152.         if key.Data.Used > 0:
  153.             i = i + 1
  154.         
  155.     
  156.     return i
  157.  
  158. if netgame.GetNetState() == 0:
  159.     import Select
  160.     ObjSlTimer = -500
  161.     
  162.     class B_InvKeyRing3DWidget(BUIx.B_TextWidget):
  163.         
  164.         def __init__(self, Parent, Name, width, Height, BODName, char):
  165.             BUIx.B_TextWidget.__init__(self, Parent, Name, '', font_server, '..\\..\\Data\\Mapa de letras.bmp')
  166.             self.SetChar(char)
  167.             self.SetAlpha(1.0)
  168.             self.Scale = 0.075
  169.             self.SetDrawFunc(self.Draw)
  170.             self.SetVisible(1)
  171.             self.SetColor(128, 128, 128)
  172.  
  173.         
  174.         def SetChar(self, char):
  175.             self.char = char
  176.             self.inv = char.GetInventory()
  177.  
  178.         
  179.         def Draw(self, x, y, time):
  180.             import darfuncs
  181.             if self.inv.nKeys == 0:
  182.                 return None
  183.             
  184.             if self.GetVisible() == 0:
  185.                 return None
  186.             
  187.             Raster.SetAlpha(self.GetAlpha())
  188.             i = 0
  189.             for j in range(self.inv.nKeys):
  190.                 key = Bladex.GetEntity(self.inv.GetKey(j))
  191.                 if key.Data == None:
  192.                     key.Data = darfuncs.EmptyClass()
  193.                     key.Data.Used = 1
  194.                 
  195.                 if key.Data.Used > 0:
  196.                     i = i + 1
  197.                 
  198.             
  199.             Bladex.DrawBOD('Llavero', x + 24, y + 24, 0, 0, self.Scale, 1)
  200.             self.SetText(`i`)
  201.             self.DefDraw(x + 10, y + 50, time)
  202.  
  203.  
  204.     
  205.     class B_InvKey3DWidget(BUIx.B_TextWidget):
  206.         
  207.         def __init__(self, Parent, Name, width, Height, BODName, char):
  208.             BUIx.B_TextWidget.__init__(self, Parent, Name, '', font_server, '../../Data/Mapa de letras.bmp')
  209.             self.SetChar(char)
  210.             self.SetAlpha(1.0)
  211.             self.Scale = 0.075
  212.             self.SetDrawFunc(self.Draw)
  213.             self.SetVisible(1)
  214.             self.SetColor(128, 128, 128)
  215.  
  216.         
  217.         def SetChar(self, char):
  218.             self.char = char
  219.             self.inv = char.GetInventory()
  220.  
  221.         
  222.         def Draw(self, x, y, time):
  223.             global ObjSlTimer
  224.             import darfuncs
  225.             if self.inv.nKeys == 0:
  226.                 return None
  227.             
  228.             if self.GetVisible() == 0:
  229.                 return None
  230.             
  231.             if self.inv.GetSelectedObject() != 'KeyRing':
  232.                 return None
  233.             
  234.             if ObjSlTimer < 0:
  235.                 return None
  236.             
  237.             if ObjSlTimer + 5 < Bladex.GetTime():
  238.                 ObjSlTimer = -1
  239.                 return None
  240.             
  241.             Raster.SetAlpha(self.GetAlpha())
  242.             i = 0
  243.             for j in range(self.inv.nKeys):
  244.                 key = Bladex.GetEntity(self.inv.GetKey(j))
  245.                 if key.Data == None:
  246.                     key.Data = darfuncs.EmptyClass()
  247.                     key.Data.Used = 1
  248.                 
  249.                 if key.Data.Used > 0:
  250.                     Bladex.DrawBOD(key.Kind, x + 8, y + i * 16 + 16, 0, 0, self.Scale, 1)
  251.                     self.SetText(Select.GetSelectionData(key.Name)[2])
  252.                     self.DefDraw(x + 24, y + i * 16, time)
  253.                     i = i + 1
  254.                 
  255.             
  256.  
  257.  
  258.     
  259.     class B_InvTabletWidget(BUIx.B_TextWidget):
  260.         
  261.         def __init__(self, Parent, Name, Text, char):
  262.             BUIx.B_TextWidget.__init__(self, Parent, Name, Text, font_server, '../../Data/Icons/Iconosrunas.BMP')
  263.             self.SetChar(char)
  264.             self.SetAlpha(1.0)
  265.             self.SetColor(123, 98, 42)
  266.             self.Name = Name
  267.             self.SetDrawFunc(self.Draw)
  268.  
  269.         
  270.         def SetChar(self, char):
  271.             self.char = char
  272.             self.inv = char.GetInventory()
  273.  
  274.         
  275.         def Draw(self, x, y, time):
  276.             if self.inv.GetTablet(self.Name) == None:
  277.                 return None
  278.             
  279.             if self.GetVisible() == 0:
  280.                 return None
  281.             
  282.             self.DefDraw(x, y, time)
  283.  
  284.  
  285.     
  286.     class B_InvSpecialKeyWidget(BUIx.B_BitmapWidget):
  287.         
  288.         def __init__(self, Parent, Name, width, Height, char):
  289.             BUIx.B_BitmapWidget.__init__(self, Parent, Name, width, Height, Name, '../../Data/Icons/Iconosllaves.mmp')
  290.             self.SetChar(char)
  291.             self.SetAlpha(1.0)
  292.             self.SetColor(255, 255, 255)
  293.             self.Scale = 0.0
  294.             self.Name = Name
  295.             self.SetDrawFunc(self.Draw)
  296.  
  297.         
  298.         def SetChar(self, char):
  299.             self.char = char
  300.             self.inv = char.GetInventory()
  301.  
  302.         
  303.         def Draw(self, x, y, time):
  304.             if self.inv.GetSpecialKey(0) == None:
  305.                 return None
  306.             
  307.             if self.inv.GetSpecialKey(self.Name) == None:
  308.                 self.SetAlpha(0.2)
  309.             else:
  310.                 self.SetAlpha(1.0)
  311.             if self.GetVisible() == 0:
  312.                 return None
  313.             
  314.             (w, h) = self.GetSize()
  315.             self.DefDraw(x, y, time)
  316.  
  317.  
  318.     
  319.     def CreateEnemyWidget(RootName, Frame, set_autoscale = 1, SizeXY = 28):
  320.         wEnemy = BUIx.B_BitmapWidget(Frame, RootName, SizeXY, SizeXY, 'Demon', '../../Data/Icons/Demon.bmp')
  321.         wEnemy.SetColor(255, 255, 255)
  322.         wVenomEnemy = WidgetsExtra.B_FlashBitmapWidget(Frame, RootName, SizeXY, SizeXY, 'Enemy Poisoned', '../../Data/Icons/Icono Veneno.bmp')
  323.         wVenomEnemy.SetColor(255, 255, 255)
  324.         wVenomEnemy.MaxAlpha = 0.5
  325.         wVenomEnemy.SetFlash(5)
  326.         wVenomEnemy.SetVisible(0)
  327.         wEnemy.AddLabel(wVenomEnemy, 0.5, 0.5, BUIx.B_Widget.B_LAB_HCenter, BUIx.B_Widget.B_LAB_VCenter, BUIx.B_Widget.B_FR_HRelative, BUIx.B_Widget.B_FR_HCenter, BUIx.B_Widget.B_FR_VRelative, BUIx.B_Widget.B_FR_VCenter)
  328.         wEnemyLifeLabel = BUIx.B_TextWidget(wEnemy, RootName + 'LifeLabel', '250', font_server, '../../Data/Mapa de letras.bmp')
  329.         wEnemyLifeLabel.SetColor(255, 0, 0)
  330.         wEnemyLifeLabel.SetAlpha(0.5)
  331.         wEnemy.AddLabel(wEnemyLifeLabel, 2, 0, BUIx.B_Widget.B_LAB_HCenter, BUIx.B_Widget.B_LAB_Bottom, BUIx.B_Widget.B_FR_Right, BUIx.B_Widget.B_FR_Right, BUIx.B_Widget.B_FR_AbsoluteTop, BUIx.B_Widget.B_FR_Top)
  332.         wEnemyLevelLabel = BUIx.B_TextWidget(wEnemy, RootName + 'LevelLabel', '8', font_server, '../../Data/Mapa de letras.bmp')
  333.         wEnemyLevelLabel.SetColor(0, 159, 220)
  334.         wEnemyLevelLabel.SetAlpha(0.5)
  335.         wEnemy.AddLabel(wEnemyLevelLabel, 1, 0, BUIx.B_Widget.B_LAB_HCenter, BUIx.B_Widget.B_LAB_VCenter, BUIx.B_Widget.B_FR_Right, BUIx.B_Widget.B_FR_Right, BUIx.B_Widget.B_FR_AbsoluteTop, BUIx.B_Widget.B_FR_Top)
  336.         wEnemyLifeBar = WidgetsExtra.B_FlashBarWidget(wEnemy, RootName + 'LifeBar', 32, 5)
  337.         wEnemyLifeBar.SetFlashColor(53, 141, 36)
  338.         wEnemyLifeBar.SetColor(255, 0, 0)
  339.         wEnemyLifeBar.SetBackgroundColor(0, 0, 0)
  340.         wEnemyLifeBar.SetFlash(0)
  341.         wEnemyLifeBar.Continuous = 0
  342.         wEnemyLifeBar.SetBackgroundAlpha(1.0)
  343.         wEnemyLifeBar.SetAlpha(1.0)
  344.         wEnemyLifeBar.SetBitmap('BitmapBarraEnemigo')
  345.         wEnemy.AddLabel(wEnemyLifeBar, 0.5, 12, BUIx.B_Widget.B_LAB_HCenter, BUIx.B_Widget.B_LAB_Bottom, BUIx.B_Widget.B_FR_HCenter, BUIx.B_Widget.B_FR_HCenter, BUIx.B_Widget.B_FR_AbsoluteTop, BUIx.B_Widget.B_FR_Top)
  346.         wEnemyKeyLabel = B_Obj3DWidget(wEnemy, RootName + 'Key', 32, 32, 'Llave')
  347.         wEnemyKeyLabel.Scale = 0
  348.         wEnemyKeyLabel.SetAlpha(1.0)
  349.         wEnemy.AddLabel(wEnemyKeyLabel, 0.5, 15 + 5, BUIx.B_Widget.B_LAB_HCenter, BUIx.B_Widget.B_LAB_Bottom, BUIx.B_Widget.B_FR_HCenter, BUIx.B_Widget.B_FR_HCenter, BUIx.B_Widget.B_FR_AbsoluteTop, BUIx.B_Widget.B_FR_Top)
  350.         wEnemyObjLabel = B_Obj3DWidget(wEnemy, RootName + 'Obj', 32, 32, 'Pocima')
  351.         wEnemyObjLabel.Scale = 0
  352.         wEnemyObjLabel.SetAlpha(1.0)
  353.         wEnemy.AddLabel(wEnemyObjLabel, 0.5, 52 + 7, BUIx.B_Widget.B_LAB_HCenter, BUIx.B_Widget.B_LAB_Bottom, BUIx.B_Widget.B_FR_HCenter, BUIx.B_Widget.B_FR_HCenter, BUIx.B_Widget.B_FR_AbsoluteTop, BUIx.B_Widget.B_FR_Top)
  354.         if set_autoscale:
  355.             wEnemy.SetAutoScale(1)
  356.             wVenomEnemy.SetAutoScale(1)
  357.             wEnemyLifeLabel.SetAutoScale(1)
  358.             wEnemyLevelLabel.SetAutoScale(1)
  359.             wEnemyKeyLabel.SetAutoScale(1)
  360.             wEnemyObjLabel.SetAutoScale(1)
  361.         
  362.         return (wEnemy, wVenomEnemy, wEnemyLifeLabel, wEnemyLevelLabel, wEnemyKeyLabel, wEnemyObjLabel, wEnemyLifeBar)
  363.  
  364.     
  365.     def CreateObjectWidget(RootName, BODName, Frame):
  366.         wObject = B_Obj3DWidget(Frame, RootName, 24, 32, BODName)
  367.         wObject.SetSolid(0)
  368.         wObject.SetBorder(0)
  369.         wObjectLabel = BUIx.B_TextWidget(wObject, RootName + 'Label', '', font_server, '../../Data/Mapa de letras.bmp')
  370.         wObjectLabel.SetColor(170, 170, 170)
  371.         wObjectLabel.SetAlpha(1.0)
  372.         wObject.AddLabel(wObjectLabel, 0.5, 4, BUIx.B_Widget.B_LAB_HCenter, BUIx.B_Widget.B_LAB_Bottom, BUIx.B_Widget.B_FR_HRelative, BUIx.B_Widget.B_FR_HCenter, BUIx.B_Widget.B_FR_AbsoluteTop, BUIx.B_Widget.B_FR_Top)
  373.         return (wObject, wObjectLabel)
  374.  
  375.     CYCLE_SPEED = 0.25
  376.     
  377.     class B_ObjectsFrame(BUIx.B_FrameWidget):
  378.         
  379.         def __init__(self, Parent, Name, width, Height, char, InitObjPositions = [
  380.             (0, 6),
  381.             (25, 6),
  382.             (50, 6),
  383.             (75, 6),
  384.             (100, 6),
  385.             (0, 40),
  386.             (25, 40),
  387.             (50, 40),
  388.             (75, 40),
  389.             (100, 40),
  390.             (0, 64),
  391.             (25, 64),
  392.             (50, 64),
  393.             (75, 64),
  394.             (100, 64)]):
  395.             BUIx.B_FrameWidget.__init__(self, Parent, Name, width, Height)
  396.             self.wObjects = []
  397.             self.nObjects = len(InitObjPositions)
  398.             self.SetChar(char)
  399.             self.LastTime = 0.0
  400.             self.LastSelection = 0
  401.             self.NameText = BUIx.B_TextWidget(self, 'ObjName', 'Hola', font_server, '../../Data/Mapa de letras.bmp')
  402.             self.NameText.SetColor(255, 255, 255)
  403.             self.NameText.SetAlpha(1.0)
  404.             self.AddWidget(self.NameText, 0.5, 56, BUIx.B_FrameWidget.B_FR_HRelative, BUIx.B_FrameWidget.B_FR_HCenter, BUIx.B_FrameWidget.B_FR_AbsoluteTop, BUIx.B_FrameWidget.B_FR_Top)
  405.             self.NameText.SetAutoScale(1)
  406.             self.BarraBonita = BUIx.B_BitmapWidget(self, 'ObjNameBg', 125, 20, 'MARCOINVENTARIO', '../../Data/marcoinventario.mmp')
  407.             self.BarraBonita.SetColor(255, 255, 255)
  408.             self.BarraBonita.SetAlpha(0.75)
  409.             self.AddWidget(self.BarraBonita, 0.5, 52, BUIx.B_FrameWidget.B_FR_HRelative, BUIx.B_FrameWidget.B_FR_HCenter, BUIx.B_FrameWidget.B_FR_AbsoluteTop, BUIx.B_FrameWidget.B_FR_Top)
  410.             self.BarraBonita.SetAutoScale(1)
  411.             for i in range(self.nObjects):
  412.                 self.AddNewObject('ObjectElement_' + str(i), InitObjPositions[i])
  413.             
  414.             self.AddWidgets()
  415.             self.SetDrawFunc(self.Draw)
  416.  
  417.         
  418.         def AddNewObject(self, object_name, InitObjPosition):
  419.             wObj = B_Obj3DWidget(self, object_name, 24, 32, 'Pocima')
  420.             wObj.SetAlpha(1.0)
  421.             wObj.InitAlpha = 1.0
  422.             wObj.Position = InitObjPosition
  423.             wObj.Scale = 0
  424.             wObj.SetAutoScale(1)
  425.             self.wObjects.append(wObj)
  426.  
  427.         
  428.         def Draw(self, x, y, time):
  429.             self.DefDraw(x, y, time)
  430.             nb = len(self.BODList)
  431.             if nb > self.nObjects:
  432.                 print 'Error in objects frame, trying to display more objects than ' + `self.nObjects`
  433.                 return None
  434.             
  435.             text = ''
  436.             iCentral = 0
  437.             for i in range(nb):
  438.                 pass
  439.             
  440.             if self.LastSelection != iCentral:
  441.                 self.LastTime = time + CYCLE_SPEED
  442.                 self.LastSelection = iCentral
  443.             
  444.             if self.LastTime > time:
  445.                 DeltaVariation = (self.LastTime - time) / CYCLE_SPEED
  446.             else:
  447.                 DeltaVariation = 0
  448.             if nb > 0:
  449.                 Advance = 3.1415 * 2 / nb
  450.                 for i in range(nb):
  451.                     wObjCurr = self.wObjects[i]
  452.                     Angle = Advance * ((i - iCentral) + DeltaVariation)
  453.                     SelFactor = (math.cos(Angle) + 1.0) / 2.0
  454.                     (wx, wy) = self.GetSize()
  455.                     (rw, rh) = Raster.GetSize()
  456.                     wx = wx * 640 / rw
  457.                     wy = wy * 480 / rh
  458.                     self.MoveWidgetTo(wObjCurr.Name(), (math.sin(Angle) + 1.0) * (wx - 25.0) / 2.0, SelFactor * 20.0)
  459.                     wObjCurr.SetBOD(self.BODList[i])
  460.                     wObjCurr.SetVisible(1)
  461.                     wObjCurr.SetAlpha(SelFactor ** 2 * 0.9 + 0.1)
  462.                     nMaxItems = self.inv.GetMaxNumberObjectsAt(i)
  463.                     if self.inv.IsObjectSelected(i):
  464.                         if self.BODList[i] == 'Llavero':
  465.                             text = '(' + `GetUnusedKeys(self.inv)` + ') '
  466.                         elif nMaxItems > 1:
  467.                             nItems = self.inv.GetNumberObjectsAt(i)
  468.                             text = '(' + str(nItems) + '/' + str(nMaxItems) + ') '
  469.                         else:
  470.                             text = ''
  471.                     
  472.                 
  473.             
  474.             if self.inv.GetSelectedObject():
  475.                 self.NameText.SetText(text + Select.GetSelectionData(self.inv.GetSelectedObject())[2])
  476.                 self.BarraBonita.SetVisible(1)
  477.             else:
  478.                 self.NameText.SetText('')
  479.                 self.BarraBonita.SetVisible(0)
  480.             for i in range(nb, self.nObjects):
  481.                 self.wObjects[i].SetVisible(0)
  482.             
  483.             self.RecalcLayout()
  484.  
  485.         
  486.         def SetBODs(self, BODList):
  487.             self.BODList = BODList
  488.  
  489.         
  490.         def SetObjectNames(self, ObjectNameList):
  491.             nb = len(ObjectNameList)
  492.             if nb > self.nObjects:
  493.                 print 'Error in objects frame, trying to display more objects than ' + `self.nObjects`
  494.                 return None
  495.             
  496.             for i in range(nb):
  497.                 wObjCurr = self.wObjects[i]
  498.                 wObjCurr.SetObjectName(ObjectNameList[i])
  499.             
  500.  
  501.         
  502.         def SetChar(self, char):
  503.             self.char = char
  504.             self.inv = char.GetInventory()
  505.  
  506.         
  507.         def AddWidgets(self):
  508.             for i in self.wObjects:
  509.                 self.AddWidget(i, i.Position[0], i.Position[1], BUIx.B_FrameWidget.B_FR_AbsoluteLeft, BUIx.B_FrameWidget.B_FR_Left, BUIx.B_FrameWidget.B_FR_AbsoluteTop, BUIx.B_FrameWidget.B_FR_Top)
  510.             
  511.  
  512.  
  513.     
  514.     class B_HandWidget(BUIx.B_FrameWidget):
  515.         
  516.         def __init__(self, Parent, Name, width, Height, Side, InitObjAlpha = [
  517.             1.0,
  518.             0.3,
  519.             0.2,
  520.             0.1], InitObjPositions = [
  521.             (5, 10),
  522.             (35, 20),
  523.             (75, 30),
  524.             (110, 40)], Wants_auto_scale = 1):
  525.             BUIx.B_FrameWidget.__init__(self, Parent, Name, width, Height)
  526.             self.SetAutoScale(Wants_auto_scale)
  527.             if len(InitObjAlpha) != len(InitObjPositions):
  528.                 raise InitError, 'Init size mismatch'
  529.             
  530.             self.nObjects = len(InitObjAlpha)
  531.             self.Side = Side
  532.             self.wObjects = []
  533.             for i in range(self.nObjects):
  534.                 wObj = B_Obj3DWidget(self, 'HandElement_' + str(i), 140, 140, 'Unset')
  535.                 wObj.SetAlpha(InitObjAlpha[i])
  536.                 wObj.InitAlpha = InitObjAlpha[i]
  537.                 wObj.Position = InitObjPositions[i]
  538.                 wObj.Scale = 0.1
  539.                 wObj.SetAutoScale(Wants_auto_scale)
  540.                 self.wObjects.append(wObj)
  541.             
  542.             self.wNameText = BUIx.B_TextWidget(self, 'NameText', '', font_server, '../../Data/Mapa de letras.bmp')
  543.             self.wNameText.SetColor(170, 170, 170)
  544.             self.wNameText.SetAlpha(1.0)
  545.             self.wNameText.SetAutoScale(Wants_auto_scale)
  546.             self.wDefText = BUIx.B_TextWidget(self, 'DefText', '+0 DEF ', font_server, '../../Data/Mapa de letras.bmp')
  547.             self.wDefText.SetAlpha(1.0)
  548.             self.wDefText.SetColor(255, 0, 0)
  549.             self.wDefText.SetAutoScale(Wants_auto_scale)
  550.             self.wPowText = BUIx.B_TextWidget(self, 'PowText', '+0 POW', font_server, '../../Data/Mapa de letras.bmp')
  551.             self.wPowText.SetAlpha(1.0)
  552.             self.wPowText.SetColor(0, 160, 221)
  553.             self.wPowText.SetAutoScale(Wants_auto_scale)
  554.             self.wAltPowText = BUIx.B_TextWidget(self, 'AltPowText', '+0 POW', font_server, '../../Data/Mapa de letras.bmp')
  555.             self.wAltPowText.SetAlpha(1.0)
  556.             self.wAltPowText.SetColor(0, 160, 221)
  557.             self.wAltPowText.SetAutoScale(Wants_auto_scale)
  558.             self.wResText = BUIx.B_TextWidget(self, 'ResText', 'RESISTANCE: 0/0', font_server, '../../Data/Mapa de letras.bmp')
  559.             self.wResText.SetAlpha(1.0)
  560.             self.wResText.SetColor(119, 241, 252)
  561.             self.wResText.SetAutoScale(Wants_auto_scale)
  562.             self.AddWidget(self.wNameText, 0.5, 0, BUIx.B_FrameWidget.B_FR_HRelative, BUIx.B_FrameWidget.B_FR_HCenter, BUIx.B_FrameWidget.B_FR_AbsoluteTop, BUIx.B_FrameWidget.B_FR_Top)
  563.             self.AddWidget(self.wDefText, 0.5, 12, BUIx.B_FrameWidget.B_FR_HRelative, BUIx.B_FrameWidget.B_FR_Right, BUIx.B_FrameWidget.B_FR_AbsoluteTop, BUIx.B_FrameWidget.B_FR_Top)
  564.             self.AddWidget(self.wPowText, 0.5, 12, BUIx.B_FrameWidget.B_FR_HRelative, BUIx.B_FrameWidget.B_FR_Left, BUIx.B_FrameWidget.B_FR_AbsoluteTop, BUIx.B_FrameWidget.B_FR_Top)
  565.             self.AddWidget(self.wAltPowText, 0.5, 12, BUIx.B_FrameWidget.B_FR_HRelative, BUIx.B_FrameWidget.B_FR_HCenter, BUIx.B_FrameWidget.B_FR_AbsoluteTop, BUIx.B_FrameWidget.B_FR_Top)
  566.             self.AddWidget(self.wResText, 0.5, 24, BUIx.B_FrameWidget.B_FR_HRelative, BUIx.B_FrameWidget.B_FR_HCenter, BUIx.B_FrameWidget.B_FR_AbsoluteTop, BUIx.B_FrameWidget.B_FR_Top)
  567.             self.AddWidgets()
  568.  
  569.         
  570.         def AddWidgets(self):
  571.             wid_pos = BUIx.B_FrameWidget.B_FR_AbsoluteLeft
  572.             wid_anc = BUIx.B_FrameWidget.B_FR_Left
  573.             if self.Side != 'Left':
  574.                 wid_pos = BUIx.B_FrameWidget.B_FR_AbsoluteRight
  575.                 wid_anc = BUIx.B_FrameWidget.B_FR_Right
  576.             
  577.             for i in self.wObjects:
  578.                 self.AddWidget(i, i.Position[0], i.Position[1], wid_pos, wid_anc, BUIx.B_FrameWidget.B_FR_AbsoluteTop, BUIx.B_FrameWidget.B_FR_Top)
  579.             
  580.  
  581.         
  582.         def ResetPositions(self):
  583.             for i in self.wObjects:
  584.                 self.RemoveWidget(i.Name(), 0)
  585.             
  586.             self.AddWidgets()
  587.             index = 0
  588.             for i in self.wObjects:
  589.                 i.SetAlpha(i.InitAlpha)
  590.                 index = index + 1
  591.             
  592.  
  593.         
  594.         def SetBODs(self, BODList):
  595.             nb = len(BODList)
  596.             if nb > self.nObjects:
  597.                 print 'Error in hand widgets, trying to display more objects than ' + `self.nObjects`
  598.                 return None
  599.             
  600.             for i in range(nb):
  601.                 self.wObjects[i].SetBOD(BODList[i])
  602.                 self.wObjects[i].SetVisible(1)
  603.             
  604.             for i in range(nb, self.nObjects):
  605.                 self.wObjects[i].SetVisible(0)
  606.             
  607.  
  608.         
  609.         def SetObjectNames(self, ObjectNameList):
  610.             nb = len(ObjectNameList)
  611.             if nb > self.nObjects:
  612.                 print 'Error in hand widgets, trying to display more objects than ' + `self.nObjects`
  613.                 return None
  614.             
  615.             for i in range(nb):
  616.                 wObjCurr = self.wObjects[i]
  617.                 wObjCurr.SetObjectName(ObjectNameList[i])
  618.             
  619.  
  620.         
  621.         def SetText(self, name, power, defence, res, res_max):
  622.             if power == None or name == None:
  623.                 self.SwitchOffText()
  624.             
  625.             if defence != None and res != None and res_max != None:
  626.                 self.SetNamePowDefResText(name, power, defence, res, res_max)
  627.             elif res != None and res_max != None:
  628.                 self.SetNamePowResText(name, power, res, res_max)
  629.             elif defence != None:
  630.                 self.SetNamePowDefText(name, power, defence)
  631.             
  632.  
  633.         
  634.         def SwitchOffText(self):
  635.             self.wNameText.SetText('')
  636.             self.wDefText.SetVisible(0)
  637.             self.wPowText.SetVisible(0)
  638.             self.wAltPowText.SetVisible(0)
  639.             self.wResText.SetVisible(0)
  640.  
  641.         
  642.         def SetNamePowDefText(self, name, power, defence):
  643.             self.wNameText.SetText(name)
  644.             self.wDefText.SetVisible(1)
  645.             self.wPowText.SetVisible(1)
  646.             self.wAltPowText.SetVisible(0)
  647.             self.wResText.SetVisible(0)
  648.             def_text = `defence` + ' DEF '
  649.             if defence >= 0:
  650.                 def_text = '+' + def_text
  651.                 self.wDefText.SetColor(0, 160, 221)
  652.             else:
  653.                 self.wDefText.SetColor(255, 0, 0)
  654.             self.wDefText.SetText(def_text)
  655.             power_text = `power` + ' POW'
  656.             if power >= 0:
  657.                 power_text = '+' + power_text
  658.                 self.wPowText.SetColor(0, 160, 221)
  659.             else:
  660.                 self.wPowText.SetColor(255, 0, 0)
  661.             power_text = ' ' + power_text
  662.             self.wPowText.SetText(power_text)
  663.             self.RecalcLayout()
  664.  
  665.         
  666.         def SetNamePowResText(self, name, power, resistance, max_resistance):
  667.             self.wNameText.SetText(name)
  668.             self.wDefText.SetVisible(0)
  669.             self.wPowText.SetVisible(0)
  670.             self.wAltPowText.SetVisible(1)
  671.             self.wResText.SetVisible(1)
  672.             power_text = `power` + ' POW'
  673.             if power >= 0:
  674.                 power_text = '+' + power_text
  675.                 self.wAltPowText.SetColor(0, 160, 221)
  676.             else:
  677.                 self.wAltPowText.SetColor(255, 0, 0)
  678.             power_text = ' ' + power_text
  679.             self.wAltPowText.SetText(power_text)
  680.             resistance_text = 'RESISTANCE: ' + `resistance` + ' / ' + `max_resistance`
  681.             self.wResText.SetText(resistance_text)
  682.             self.RecalcLayout()
  683.  
  684.         
  685.         def SetNamePowDefResText(self, name, power, defence, resistance, max_resistance):
  686.             self.wNameText.SetText(name)
  687.             self.wDefText.SetVisible(1)
  688.             self.wPowText.SetVisible(1)
  689.             self.wAltPowText.SetVisible(0)
  690.             self.wResText.SetVisible(1)
  691.             def_text = `defence` + ' DEF '
  692.             if defence >= 0:
  693.                 def_text = '+' + def_text
  694.                 self.wDefText.SetColor(0, 160, 221)
  695.             else:
  696.                 self.wDefText.SetColor(255, 0, 0)
  697.             self.wDefText.SetText(def_text)
  698.             power_text = `power` + ' POW'
  699.             if power >= 0:
  700.                 power_text = '+' + power_text
  701.                 self.wPowText.SetColor(0, 160, 221)
  702.             else:
  703.                 self.wPowText.SetColor(255, 0, 0)
  704.             power_text = ' ' + power_text
  705.             self.wPowText.SetText(power_text)
  706.             resistance_text = 'RESISTANCE: ' + `resistance` + ' / ' + `max_resistance`
  707.             self.wResText.SetText(resistance_text)
  708.             self.RecalcLayout()
  709.  
  710.  
  711.     
  712.     class FadeInClass(Interpolator.LinearInt):
  713.         
  714.         def __init__(self, init_value, end_value, parent, widget):
  715.             Interpolator.LinearInt.__init__(self, init_value, end_value)
  716.             self.parent = parent
  717.             self.widget = widget
  718.  
  719.         
  720.         def Execute(self, value):
  721.             ret = Interpolator.LinearInt.Execute(self, value)
  722.             self.widget.MultiplyAlpha(ret)
  723.             self.parent.view_status = 1
  724.  
  725.         
  726.         def EndExecute(self):
  727.             self.parent.view_status = 2
  728.  
  729.  
  730.     
  731.     class FadeOutClass(Interpolator.LinearInt):
  732.         
  733.         def __init__(self, init_value, end_value, parent, widget):
  734.             Interpolator.LinearInt.__init__(self, init_value, end_value)
  735.             self.parent = parent
  736.             self.widget = widget
  737.  
  738.         
  739.         def Execute(self, value):
  740.             ret = Interpolator.LinearInt.Execute(self, value)
  741.             self.widget.MultiplyAlpha(ret)
  742.             self.parent.view_status = 3
  743.  
  744.         
  745.         def EndExecute(self):
  746.             self.widget.SetVisible(0)
  747.             self.parent.view_status = 0
  748.  
  749.  
  750.     
  751.     class CycleClass:
  752.         
  753.         def __init__(self, init_value, end_value, parent, parentwidget, objwidget):
  754.             self.init_value = init_value
  755.             self.end_value = end_value
  756.             self.periodX = end_value[0] - init_value[0]
  757.             self.periodY = end_value[1] - init_value[1]
  758.             self.periodAlpha = end_value[2] - init_value[2]
  759.             self.periodWidth = end_value[0] - init_value[0]
  760.             self.periodHeight = end_value[1] - init_value[1]
  761.             self.parent = parent
  762.             self.parentwidget = parentwidget
  763.             self.objwidget = objwidget
  764.             self.parent.view_status = 2
  765.  
  766.         
  767.         def Execute(self, value):
  768.             ret = (self.init_value[0] + self.periodX * value, self.init_value[1] + self.periodY * value, self.init_value[2] + self.periodAlpha * value)
  769.             self.parentwidget.MoveWidgetTo(self.objwidget.Name(), ret[0], ret[1])
  770.             self.objwidget.SetAlpha(ret[2])
  771.  
  772.         
  773.         def EndExecute(self):
  774.             self.parent.EndCycle()
  775.  
  776.  
  777.     import pdb
  778.     
  779.     class InvControl:
  780.         
  781.         def __init__(self, name, widget, char, view_period = 2.0, cycle_period = 0.3, fadein_period = 0.3, fadeout_period = 0.3, end_cycle_callback = None, Wants_auto_scale = 1):
  782.             self.view_time = -2.0
  783.             self.cycle_time = -2.0
  784.             self.cycle_count = 0
  785.             self.view_period = view_period
  786.             self.cycle_period = cycle_period
  787.             self.fadein_period = fadein_period
  788.             self.fadeout_period = fadeout_period
  789.             self.view_status = 0
  790.             self.widget = widget
  791.             self.SetChar(char)
  792.             self.interpolator = Interpolator.Interp(name)
  793.             self.name = name
  794.             self.m_FadeIn = FadeInClass(0.0, 1.0, self, self.widget)
  795.             self.m_FadeOut = FadeOutClass(1.0, 0.0, self, self.widget)
  796.             self.SetBODs()
  797.             self.end_cycle_callback = end_cycle_callback
  798.  
  799.         
  800.         def SetChar(self, char):
  801.             self.char = char
  802.             self.inv = char.GetInventory()
  803.  
  804.         
  805.         def CycleFunc(self):
  806.             time = Bladex.GetTime()
  807.             self.view_time = time
  808.             Bladex.AddScheduledFunc(time + self.view_period, self.FadeOut, ())
  809.  
  810.         
  811.         def EndCycle(self):
  812.             self.cycle_count = self.cycle_count + 1
  813.             if self.cycle_count == self.widget.nObjects:
  814.                 self.cycle_count = 0
  815.                 self.CycleFunc()
  816.                 if self.widget.wObjects[0].GetVisible():
  817.                     name = Reference.GetObjectFriendlyName(self.widget.wObjects[0].GetBOD())
  818.                     (power, defence, res, res_max) = Reference.GiveObjectPowDefResResMaxData(self.widget.wObjects[0].GetObjectName())
  819.                     self.widget.SetText(name, power, defence, res, res_max)
  820.                 else:
  821.                     self.widget.SetText(None, None, None, None, None)
  822.             
  823.  
  824.         
  825.         def SetBODs(self):
  826.             pass
  827.  
  828.         
  829.         def FadeOut(self):
  830.             time = Bladex.GetTime()
  831.             if time - self.view_time > self.view_period:
  832.                 self.view_status = 3
  833.                 if self.end_cycle_callback:
  834.                     self.end_cycle_callback()
  835.                 
  836.                 self.interpolator.AddAction(time, time + self.fadeout_period, self.m_FadeOut)
  837.             
  838.  
  839.         
  840.         def CycleElements(self):
  841.             self.SetBODs()
  842.             if self.widget.wObjects[0].GetVisible():
  843.                 name = Reference.GetObjectFriendlyName(self.widget.wObjects[0].GetBOD())
  844.                 (power, defence, res, res_max) = Reference.GiveObjectPowDefResResMaxData(self.widget.wObjects[0].GetObjectName())
  845.                 self.widget.SetText(name, power, defence, res, res_max)
  846.             else:
  847.                 self.widget.SetText(None, None, None, None, None)
  848.             time = Bladex.GetTime()
  849.  
  850.         
  851.         def HideElements(self):
  852.             if self.view_status == 1:
  853.                 time = Bladex.GetTime()
  854.                 if time - self.view_time > 1.0:
  855.                     self.view_status = 0
  856.                     self.widget.SetVisible(0)
  857.                 else:
  858.                     Bladex.AddScheduledFunc(time + 2.0, self.HideElements, ())
  859.             
  860.  
  861.  
  862.     
  863.     class InvArrowsControl(BUIx.B_FrameWidget):
  864.         
  865.         def __init__(self, Parent, Name, width, Height, char):
  866.             BUIx.B_FrameWidget.__init__(self, Parent, Name, width, Height)
  867.             self.wNameText = BUIx.B_TextWidget(self, 'NameText', 'UNSPECIFIED ARROWS', font_server, '../../Data/Mapa de letras.bmp')
  868.             self.wNameText.SetAlpha(1.0)
  869.             self.wNameText.SetColor(170, 170, 170)
  870.             self.AddWidget(self.wNameText, 0.5, 0, BUIx.B_FrameWidget.B_FR_HRelative, BUIx.B_FrameWidget.B_FR_HCenter, BUIx.B_FrameWidget.B_FR_AbsoluteTop, BUIx.B_FrameWidget.B_FR_Top)
  871.             self.wNumText = BUIx.B_TextWidget(self, 'NumText', '0/0', font_server, '../../Data/Mapa de letras.bmp')
  872.             self.wNumText.SetAlpha(1.0)
  873.             self.wNumText.SetColor(0, 159, 220)
  874.             self.AddWidget(self.wNumText, 0.5, 12, BUIx.B_FrameWidget.B_FR_HRelative, BUIx.B_FrameWidget.B_FR_HCenter, BUIx.B_FrameWidget.B_FR_AbsoluteTop, BUIx.B_FrameWidget.B_FR_Top)
  875.             self.SetChar(char)
  876.             self.Name = Name
  877.             self.SetDrawFunc(self.Draw)
  878.  
  879.         
  880.         def SetChar(self, char):
  881.             self.char = char
  882.             self.inv = char.GetInventory()
  883.  
  884.         
  885.         def Draw(self, x, y, time):
  886.             quiver = self.inv.GetSelectedQuiver()
  887.             if not quiver:
  888.                 return None
  889.             
  890.             if not (self.inv.HoldingBow) and not (self.inv.HasBowOnBack):
  891.                 return None
  892.             
  893.             object = Bladex.GetEntity(quiver)
  894.             self.wNameText.SetText(Reference.GetObjectFriendlyName(object.Data.ArrowType) + 's')
  895.             self.wNumText.SetText(`object.Data.NumberOfArrows()` + '/' + `object.Data.MaxArrows`)
  896.             self.RecalcLayout()
  897.             (w, h) = self.GetSize()
  898.             self.DefDraw(x, y, time)
  899.  
  900.  
  901.     
  902.     class InvShieldControl(InvControl):
  903.         InvMode = 0
  904.         
  905.         def CycleFunc(self):
  906.             InvControl.CycleFunc(self)
  907.             if self.InvMode == 0:
  908.                 self.inv.CycleShields()
  909.             else:
  910.                 self.inv.CycleQuivers()
  911.             self.SetBODs()
  912.             self.widget.ResetPositions()
  913.  
  914.         
  915.         def SetBODs(self):
  916.             GetObjFunc = None
  917.             nItems = 0
  918.             if self.InvMode == 0:
  919.                 GetObjFunc = self.inv.GetShield
  920.                 nItems = self.inv.nShields
  921.             else:
  922.                 GetObjFunc = self.inv.GetQuiver
  923.                 nItems = self.inv.nQuivers
  924.             BODList = []
  925.             ObjectNameList = []
  926.             for i in range(nItems):
  927.                 Obj = GetObjFunc(i)
  928.                 ent = Bladex.GetEntity(Obj)
  929.                 BOD = ent.Kind
  930.                 BODList.append(BOD)
  931.                 Name = ent.Name
  932.                 ObjectNameList.append(Name)
  933.             
  934.             self.widget.SetBODs(BODList)
  935.             self.widget.SetObjectNames(ObjectNameList)
  936.  
  937.         
  938.         def SetInvMode(self, new_mode):
  939.             if self.InvMode == new_mode:
  940.                 return None
  941.             
  942.             self.InvMode = new_mode
  943.             self.SetBODs()
  944.  
  945.  
  946.     
  947.     class InvWeaponsControl(InvControl):
  948.         
  949.         def __init__(self, name, widget, char, ShieldsControl, view_period = 2.0, cycle_period = 0.3, fadein_period = 0.3, fadeout_period = 0.3, end_cycle_callback = None, Wants_auto_scale = 1):
  950.             InvControl.__init__(self, name, widget, char, view_period, cycle_period, fadein_period, fadeout_period, end_cycle_callback, Wants_auto_scale)
  951.             self.ShieldsControl = ShieldsControl
  952.  
  953.         
  954.         def CycleFunc(self):
  955.             InvControl.CycleFunc(self)
  956.             self.inv.CycleWeapons()
  957.             self.SetBODs()
  958.             self.widget.ResetPositions()
  959.             sel_weapon = self.inv.GetSelectedWeapon()
  960.             if sel_weapon:
  961.                 sel_entity = Bladex.GetEntity(sel_weapon)
  962.                 if Reference.GiveObjectFlag(sel_weapon) == Reference.OBJ_BOW:
  963.                     self.ShieldsControl.SetInvMode(1)
  964.                 else:
  965.                     self.ShieldsControl.SetInvMode(0)
  966.             
  967.  
  968.         
  969.         def SetBODs(self):
  970.             GetObjFunc = self.inv.GetWeapon
  971.             BODList = []
  972.             ObjectNameList = []
  973.             for i in range(self.inv.nWeapons):
  974.                 Obj = GetObjFunc(i)
  975.                 ent = Bladex.GetEntity(Obj)
  976.                 BOD = ent.Kind
  977.                 BODList.append(BOD)
  978.                 Name = ent.Name
  979.                 ObjectNameList.append(Name)
  980.             
  981.             self.widget.SetBODs(BODList)
  982.             self.widget.SetObjectNames(ObjectNameList)
  983.  
  984.  
  985.     
  986.     def AddKeyRingToInventory():
  987.         import Actions
  988.         import darfuncs
  989.         if not Bladex.GetEntity('KeyRing'):
  990.             KeyRing = Bladex.CreateEntity('KeyRing', 'Llavero', 0, 0, 0)
  991.             KeyRing.Static = 0
  992.             darfuncs.SetHint(KeyRing, 'Keys')
  993.             Actions.TakeObject('Player1', 'KeyRing')
  994.         
  995.  
  996.     
  997.     class InvObjectsControl(InvControl):
  998.         
  999.         def __init__(self, name, widget, char, view_period = 2.0, cycle_period = 0.3, fadein_period = 0.3, fadeout_period = 0.3, end_cycle_callback = None, Wants_auto_scale = 1):
  1000.             InvControl.__init__(self, name, widget, char, view_period, cycle_period, fadein_period, fadeout_period, end_cycle_callback, Wants_auto_scale)
  1001.             self.cycle_period = 0.0
  1002.             self.end_cycle_callback = self.DeactivateUseFunc
  1003.  
  1004.         
  1005.         def DeactivateUseFunc(self):
  1006.             self.char.Data.InventoryActive = 0
  1007.  
  1008.         
  1009.         def CycleFunc(self):
  1010.             InvControl.CycleFunc(self)
  1011.             self.inv.CycleObjects()
  1012.             self.SetBODs()
  1013.  
  1014.         
  1015.         def SetBODs(self):
  1016.             BODList = []
  1017.             ObjectNameList = []
  1018.             for i in range(self.inv.nKindObjects):
  1019.                 Obj0 = self.inv.GetObject(i)
  1020.                 ent = Bladex.GetEntity(Obj0)
  1021.                 BOD = ent.Kind
  1022.                 BODList.append(BOD)
  1023.                 Name = ent.Name
  1024.                 ObjectNameList.append(Name)
  1025.             
  1026.             self.widget.SetBODs(BODList)
  1027.             self.widget.SetObjectNames(ObjectNameList)
  1028.  
  1029.         
  1030.         def CycleElements(self):
  1031.             global ObjSlTimer
  1032.             if self.inv.nKeys:
  1033.                 AddKeyRingToInventory()
  1034.             
  1035.             time = Bladex.GetTime()
  1036.             ObjSlTimer = time
  1037.             self.char.Data.InventoryActive = 1
  1038.             if self.view_status == 2:
  1039.                 if time - self.cycle_time > self.cycle_period:
  1040.                     self.cycle_time = time
  1041.                     self.view_time = time
  1042.                     end_cycle_time = time + self.cycle_period
  1043.                     self.CycleFunc()
  1044.                 
  1045.             
  1046.             if time - self.view_time > self.view_period:
  1047.                 if self.view_status == 0:
  1048.                     self.Alpha = 0.0
  1049.                     self.widget.MultiplyAlpha(self.Alpha)
  1050.                     self.widget.SetVisible(1)
  1051.                     self.view_status = 1
  1052.                     self.SetBODs()
  1053.                     self.interpolator.AddAction(time, time + self.fadein_period, self.m_FadeIn)
  1054.                     Bladex.AddScheduledFunc(Bladex.GetTime() + self.view_period, self.FadeOut, ())
  1055.                 elif self.view_status == 1:
  1056.                     pass
  1057.                 elif self.view_status == 2:
  1058.                     pass
  1059.                 elif self.view_status == 3:
  1060.                     print 'Not implemented'
  1061.                 
  1062.                 self.view_time = time
  1063.             
  1064.  
  1065.  
  1066.  
  1067.